﻿using System;
using System.Linq;
using iss.sg4210.se18.team6s.jass.DAL;

namespace iss.sg4210.se18.team6s.jass.DAL.DataAccess.Interfaces
{
    public interface IAdvertisement
    {
        IQueryable<Advertisement> FindAllAdvertisements();
        IQueryable<Advertisement> FindAllAdvertisementsByUser(Guid userId);
        Advertisement GetAdvertisement(int advertisementId);
        void AddAdvertisement(Advertisement advertisement);
        void UpdateAdvertisement(Advertisement advertisement);
        void DeleteAdvertisement(int advertisementId);
        Company GetCompanyByAdvertisementId(int advertisementId);
        GeoArea GetGeographicalAreaByAdvertisementId(int id);
        AdvertisementType GetAdvertisementTypeByAdvertisementId(int id);
    }

    public interface IAdvertisementSearchLog
    {
        IQueryable<AdvertisementSearchLog> FindAllAdvertisementSearchLogs();
        AdvertisementSearchLog GetAdvertisementSearchLog(int advertisementSearchLogId);
        void AddAdvertisementSearchLog(AdvertisementSearchLog advertisementSearchLog);
        void UpdateAdvertisementSearchLog(AdvertisementSearchLog advertisementSearchLog);
        void DeleteAdvertisementSearchLog(int advertisementSearchLogId);
    }

    public interface IAdvertisementType
    {
        IQueryable<AdvertisementType> FindAllAdvertisementTypes();
        AdvertisementType GetAdvertisementType(int advertisementTypeId);
        void AddAdvertisementType(AdvertisementType advertisementType);
        void UpdateAdvertisementType(AdvertisementType advertisementType);
        void DeleteAdvertisementType(int advertisementTypeId);
    }

    public interface IAdvertisementViewLog
    {
        IQueryable<AdvertisementViewLog> FindAllAdvertisementViewLogs();
        AdvertisementViewLog GetAdvertisementViewLog(int advertisementViewLogId);
        void AddAdvertisementViewLog(AdvertisementViewLog advertisementViewLog);
        void UpdateAdvertisementViewLog(AdvertisementViewLog advertisementViewLog);
        void DeleteAdvertisementViewLog(int advertisementViewLogId);
    }
}
